python 计算众数、中位数、分位数、偏度、峰度 您所在的位置:网站首页 python 算平均数 方差 python 计算众数、中位数、分位数、偏度、峰度

python 计算众数、中位数、分位数、偏度、峰度

2024-07-14 10:20| 来源: 网络整理| 查看: 265

文章目录 1. 众数、中位数、分位数2. 偏度、峰度

1. 众数、中位数、分位数

使用 numpy 的 median 函数可以得到其中位数,quantile 函数可以得到其分位数,但 numpy 包目前还没有计算众数的函数。例如:

>>> a = [8, 19, 34, 9, 18] >>> np.median(a) # 得到数组 a 的中位数 18.0 >>> np.quantile(a, 0.25) # 得到数组 a 的上四分位数 9.0 >>> np.quantile(a, 0.5) # 得到数组 a 的中位数 18.0 >>> np.quantile(a, 0.75) # 得到数组 a 的下四分位数 19.0

pandas 可以使用 median,quantile,mode 函数分别计算中位数,分位数与众数。例如:

>>> df = pd.DataFrame(np.array([[85, 68, 90], [82, 63, 88], [84, 90, 88]]), columns=['统计学', '高数', '英语'], index=['张三', '李四', '王五']) >>> df 统计学 高数 英语 张三 85 68 90 李四 82 63 88 王五 84 90 88 >>> df.median() # 得到每一列的中位数 统计学 84.0 高数 68.0 英语 88.0 dtype: float64 >>> df.iloc[0, :].median() # 得到第一行的中位数 85.0 >>> df.quantile(0.25, axis = 1) # 得到所有行的上四分位数 张三 76.5 李四 72.5 王五 86.0 Name: 0.25, dtype: float64 >>> df.iloc[2, :].quantile(0.75) # 得到第三行的下四分位数 89.0 >>> df.mode() # 得到所有列的众数 统计学 高数 英语 0 82 63 88.0 1 84 68 NaN 2 85 90 NaN 2. 偏度、峰度

在计算一个样本的偏度或峰度时,对于一般的数组类型,要用到统计分析工具包 scipy,对于 pandas 中的数据类型,可以调用 pandas 自带的计算偏度或峰度的函数。

>>> import scipy.stats as st >>> a = [89, 23, 45, 18] >>> st.skew(a) # 计算偏度 0.7565543738808015 >>> st.kurtosis(a) # 计算峰度 -1.0489580648783101

需要注意的是,pandas 计算峰度时需要至少 4 个数据。

>>> import pandas as pd >>> import numpy as np >>> df = pd.DataFrame(np.array([[85, 68, 90], [82, 63, 88], [84, 90, 78]]), columns=['统计学', '高数', '英语'], index=['张三', '李四', '王五']) >>> df 统计学 高数 英语 张三 85 68 90 李四 82 63 88 王五 84 90 78 >>> df.iloc[1, :].skew() # 计算第二行的偏度 -1.3294040702410526 >>> df.skew(axis = 0) # 计算所有列的偏度 统计学 -0.935220 高数 1.498959 英语 -1.545393 dtype: float64 >>> df.skew(axis = 1) # 计算所有行的偏度 张三 -1.373033 李四 -1.329404 王五 0.000000 dtype: float64 >>> df1 = pd.DataFrame(np.array([[85, 68, 90, 65], [82, 63, 88, 83], [84, 90, 78, 90], [72, 68, 91, 84]]), columns=['统计学', '高数', '英语', '计算机'], index=['张三', '李四', '王五', '马六']) >>> df1 统计学 高数 英语 计算机 张三 85 68 90 65 李四 82 63 88 83 王五 84 90 78 90 马六 72 68 91 84 >>> df1.kurt(axis = 0) # 计算 df1 所有列的峰度 统计学 3.090874 高数 3.365664 英语 3.090874 计算机 2.769386 dtype: float64 >>> df1.iloc[:, 2].kurt() #计算 df1 第 3 列的峰度 3.090874188966101

转载于个人微信公众号: Python 数据科学与数学建模 2020122211174610.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有